package Immutable_Study;

import java.util.HashMap;
import java.util.Map;

public class ImmutableDemo4 {
    public static void main(String[] args) {
        /*
            创建Map的不可变集合，键值对的数量超过十个
         */
        HashMap<String, String> hm = new HashMap<>();
        hm.put("张三", "南京");
        hm.put("李四", "北京");
        hm.put("王五", "上海");
        hm.put("孙琪", "深圳");
        hm.put("赵六", "广东");
        hm.put("周扒皮", "芜湖");
        hm.put("PDD", "马鞍山");
        hm.put("小团团", "江西");
        hm.put("菠萝赛东", "河北");
        hm.put("Hanser", "上海");
        hm.put("小缘", "杭州");

        //2.利用上面的数据来获取一个不可变集合

        //获取到所有的键值对对象
        //Set<Map.Entry<String, String>> entries = hm.entrySet();
        //需要把entries变成一个数组
        //toArray方法在底层会比较集合的长度和数组的长度两者大小
        //如果集合的长度 > 数组的长度 : 数据在数组中放不下，此时会根据实际数据的个数，重新创建数组
        //如果集合的长度 <= 数组的长度 : 数据在数组中放的下，此时不会创建新的数组，而是直接用
        //Map.Entry[] arr = entries.toArray(new Map.Entry[0]);

        //不可变的map集合
        //Map map = Map.ofEntries(arr);

        //Map<Object, Object> map = Map.ofEntries(hm.entrySet().toArray(new Map.Entry[0]));

        //JDK10出现的方法copyOf()
        Map<String, String> map = Map.copyOf(hm);
    }
}
